#!/bin/sh

die () { echo "$@" ; exit 1; }

\. ../../../nvm.sh

\. ../../common.sh

# Mock nvm_download to ensure no network access
nvm_download() {
  die "nvm_download should not be called in offline mode"
}

# --offline with an already-installed version should succeed
INSTALLED_VERSION="$(nvm ls | command tail -1 | command awk '{print $1}' | command sed 's/\x1b\[[0-9;]*m//g')"
if [ -n "${INSTALLED_VERSION}" ] && [ "_${INSTALLED_VERSION}" != '_N/A' ] && [ "_${INSTALLED_VERSION}" != '_system' ]; then
  try nvm install --offline "${INSTALLED_VERSION}"
  [ "_$CAPTURED_EXIT_CODE" = "_0" ] \
    || die "nvm install --offline with installed version '${INSTALLED_VERSION}' should succeed, got exit code $CAPTURED_EXIT_CODE"
fi

# --offline with a nonexistent version should fail
try_err nvm install --offline 999.999.999
[ "_$CAPTURED_EXIT_CODE" != "_0" ] \
  || die "nvm install --offline with nonexistent version should fail"

EXPECTED_ERR="not found locally or in cache"
nvm_echo "$CAPTURED_STDERR" | nvm_grep -q "${EXPECTED_ERR}" \
  || die "nvm install --offline error should mention 'not found locally or in cache'; got '$CAPTURED_STDERR'"

# --offline should not require curl or wget
nvm_has() { return 1; }
try_err nvm install --offline 999.999.999
# Should fail with "not found" not "nvm needs curl or wget"
nvm_echo "$CAPTURED_STDERR" | nvm_grep -q "curl or wget" \
  && die "nvm install --offline should not require curl or wget"
alias nvm_has='\nvm_has'
unset -f nvm_has
